package dao;

import java.util.List;
import model.EstiloPontoGastronomico;
import org.hibernate.Query;
import org.hibernate.Session;
import util.HibernateUtil;

/**
 *
 * @author Lucas S Bueno
 */
public class EstiloPontoGastronomicoDAO implements BasicDAOInterface<EstiloPontoGastronomico> {

   @Override
   public boolean salvar(EstiloPontoGastronomico obj) {
      Session session = HibernateUtil.getSessionFactory().openSession();
      session.beginTransaction();

      try {
         session.save(obj);
         session.getTransaction().commit();
         session.disconnect();
      } catch (Exception e) {
         System.err.println("ERRO AO SALVAR ESTILO DE PONTO GASTRONOMICO!\n" + e.getMessage());
         return false;
      }

      return true;
   }

   @Override
   public List<EstiloPontoGastronomico> recuperar() {
      Session session = HibernateUtil.getSessionFactory().openSession();
      session.beginTransaction();
      List<EstiloPontoGastronomico> estilos;

      try {
         estilos = session.createQuery("from EstiloPontoGastronomico").list();
         session.getTransaction().commit();
      } catch (Exception e) {
         System.err.println("ERRO AO RECUPERAR ESTILOS DE PONTOS GASTRONOMICOS!\n" + e.getMessage());
         return null;
      }

      return estilos;
   }

   @Override
   public EstiloPontoGastronomico recuperar(int id) {
      Session session = HibernateUtil.getSessionFactory().openSession();
      session.beginTransaction();
      EstiloPontoGastronomico estilo;

      try {
         Query consulta = session.createQuery("from EstiloPontoGastronomico as est where est.id = :id");
         consulta.setInteger("id", id);
         estilo = (EstiloPontoGastronomico) consulta.uniqueResult();
         session.getTransaction().commit();
      } catch (Exception e) {
         System.err.println("ERRO AO RECUPERAR ESTILO DE PONTO GASTRONOMICO!\n" + e.getMessage());
         return null;
      }

      return estilo;
   }

   @Override
   public boolean atualizar(EstiloPontoGastronomico obj) {
      Session session = HibernateUtil.getSessionFactory().openSession();
      session.beginTransaction();

      try {
         session.update(obj);
         session.getTransaction().commit();
         session.disconnect();
      } catch (Exception e) {
         System.err.println("ERRO AO ATUALIZAR ESTILO DE PONTO GASTRONOMICO!\n" + e.getMessage());
         return false;
      }
      
      return true;
   }

   @Override
   public boolean deletar(EstiloPontoGastronomico obj) {
      Session session = HibernateUtil.getSessionFactory().openSession();
      session.beginTransaction();
      
      try {
         session.delete(obj);
         session.getTransaction().commit();
         session.disconnect();
      } catch (Exception e) {
         System.err.println("ERRO AO DELETAR ESTILO DE PONTO GASTRONOMICO!\n" + e.getMessage());
         return false;
      }
      
      return true;
   }
}
